package org.jsola.hr.constant;


import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

/**
 * @author zhr
 */
public class HrConstants {

    /**
     * 请求根路径
     */
    public static final String CONTEXT_PATH = "/hr";

    /**
     * 外部地址
     */
    public static final String API_PATH = CONTEXT_PATH + "/api";

    /**
     * 内部地址
     */
    public static final String PROVIDER_PATH = CONTEXT_PATH + "/provider";

    /**
     * 默认字段
     */
    public static final String DEFAULT = "default";

    /**
     * 事务beanName
     */
    public static final String TX = "hrTx";

    /**
     * SqlSessionFactory beanName
     */
    public static final String SQL_SESSION_FACTORY_BEAN_NAME = "hrSqlSessionFactory";

    /**
     * hr模块名
     */
    public static final String HR_SUBJECT_TYPE = "hr";

    /**
     * 备忘录提醒通知类型编码
     */
    public static final String NOTICE_TYPE_CODE_MEMO_REMIND = "memoRemind";

    /**
     * 备忘录提醒通知类型编码
     */
    public static final String NOTICE_TYPE_CODE_EMP_SIGN_OVER = "empSignOver";

    /**
     * 员工信息录入页面地址
     */
    public static final String EMP_INIT_URL = "http://prod.huaerk.com/hr/empInit";

    /**
     * 3des参数key
     */
    public static final String EMP_3DES_KEY = "AAAAAAAAAAAAAAAA";

    /**
     * 发送offer的邮箱
     */
    public static final String OFFER_SENDER_EMAIL = "15656748810@163.com";

    /**
     * 发送正式offer的邮件模板ID
     */
    public static final Integer FORMAL_OFFER_EMAIL_TEMP_ID = 2;

    /**
     * 发送实习offer的邮件模板ID
     */
    public static final Integer INFORMAL_OFFER_EMAIL_TEMP_ID = 3;

    /**
     * 发送邮件返回失败异常提示
     */
    public static final String OFFER_EMAIL_EXP = "发送offer邮件异常，操作失败";

    /**
     * 员工开具证明模板字段集合
     */
    public final static Map TEMPLATE_FIELD_MAP = new HashMap() {{
        //员工基础信息
        put("number", "工号");
        put("name", "员工姓名");
        put("phone", "手机号");
        put("gender", "性别");
        put("age", "年龄");
        put("highest_education", "最高学历");
        put("birthday", "出生日期");
        put("marital_status", "婚姻状况");
        put("nation", "民族");
        put("political_status", "政治面貌");
        put("birthplace", "籍贯");
        put("native_location", "户籍所在地");
        put("reg_type", "户口类型");
        put("current_location", "现居住地址");
        put("email", "个人邮箱");
        put("emer_contact", "紧急联系人");
        put("emer_phone", "紧急联系电话");
        put("emer_location", "紧急联系地址");
        put("bank_card", "银行卡号");
        put("bank_name", "开户行");
        put("bank_place", "开户地区");
        put("soc_type", "是否有社保");
        put("soc_card", "社保卡号");
        put("supervisor", "直属主管");
        put("employ_type", "聘用形式");
        put("informal_type", "非正式类型");
        put("formal_type", "正式类型");
        put("contracts_status", "合同状态");
        put("manager_form", "管理形式");
        put("work_city", "工作城市");
        put("join_date", "入职时间");
        put("leave_date", "离职时间");
        put("leave_reason", "离职原因");
        put("status", "员工状态");
        //员工相关信息
        put("id_card_no", "身份证号");
        put("dep_name", "部门名称");
        put("position_name", "岗位名称");
        put("gra_college", "毕业院校");
        put("major", "专业");
        put("current_time", "当前时间");
    }};

    /**
     * 员工合同模板字段集合
     */
    public final static Map<String, String> CONTRACT_FIELD_MAP = new HashMap() {{
        //员工基础信息
        put("companyName", "企业全称");
        put("contactPerson", "企业联系人");
        put("legalPerson", "企业法定代表人");
        put("address", "企业公司地址");
        put("name", "员工姓名");
        put("typeName", "证件类型");
        put("number", "证件号码");
        put("genderName", "性别");
        put("phone", "联系电话");
        put("currentLocation", "现居住地");
        put("nativeLocation", "户籍地址");
        put("emerContact", "紧急联系人姓名");
        put("emerContactRela", "紧急联系人关系");
        put("emerPhone", "紧急联系人电话");
        put("emerLocation", "紧急联系人地址");
        put("bankCardName", "工资卡开户行");
        put("bankCardNumber", "工资卡卡号");
        put("graCollege", "毕业学校");
        put("major", "毕业专业");
        put("startTime", "教育开始时间");
        put("endTime", "教育结束时间");
        put("depName", "部门");
        put("depLeader", "部门负责人");
        put("positionName", "岗位");
        put("contractNumber", "合同编号");
        put("contractStartTime", "合同开始时间");
        put("contractEndTime", "合同结束时间");
        put("contractExpire", "合同期限");
        put("probation", "试用期");
        put("probationStartTime", "试用期开始日期");
        put("probationEndTime", "试用期结束日期");
        put("contractCompany", "合同公司");
        put("workContent", "工作内容");
        put("workAddress", "工作地点");
        put("workDayHours", "日工作小时数");
        put("workWeekHours", "周工作小时数");
        put("otherVacArrangement", "其他休假安排");
        put("salaryBeforeTax", "税前工资");
        put("proSalaryBeforeTax", "试用期税前工资");
        put("monthlyPayDate", "每月工资发放日");
        put("finishWorkSign", "完成工作标志");
        put("signingDate", "签署日期");
        put("joinDate", "入职日期");
        put("turnStraightDate", "转正日期");
        put("leaveDate", "离职日期");
        put("leaveReason", "离职原因");
        put("employerName", "用工企业名称");
    }};

    /**
     * EXCEL表来源SHEET名称
     */
    public static final String SHEET_NAME = "考勤记录";

    /**
     * EXCEL员工花名册导入表来源SHEET名称
     */
    public static final String EMP_IMPORT_SHEET_NAME = "员工数据";

    /**
     * 上班打卡时间
     */
    public static final String TIME_TO_WORK = "08:50";

    /**
     * 下班打卡时间
     */
    public static final String TIME_AFTER_WORK = "18:00";

    /**
     * 下午上班时间
     */
    public static final String TIME_MID_WORK = "13:30";

    /**
     * 月考勤天数
     */
    public static final BigDecimal MONTH_WORK_DAYS = new BigDecimal(21.75);

    /**
     * 个税最低工资线
     */
    public static final Integer SOC_BASIC_AMOUNT = 350000;

    /**
     * 个税最低工资线
     */
    public static final Long EMP_TICKET_EXPIRE = (long) 200 * 1000 * 60 * 60;


    /**
     * hr subjectType 入职
     */
    public static final String SUBJECT_TYPE_HR_ON_JOB = "hrOnJob";


    /**
     * hr subjectType 转正
     */
    public static final String SUBJECT_TYPE_HR_TURN_STRAIGHT = "hrTurnStraight";


    /**
     * hr subjectType 调岗
     */
    public static final String SUBJECT_TYPE_HR_TRANSFER_DUTY = "hrTransferDuty";


    /**
     * hr subjectType 离职
     */
    public static final String SUBJECT_TYPE_HR_LEAVING = "hrLeaving";


    /**
     * 公司公告/个人公告定时任务类型_上线
     */
    public static final String SYS_NOTICE_ONLINE = "online";

    /**
     * 公司公告/个人公告定时任务类型_下线
     */
    public static final String SYS_NOTICE_OFFLINE = "offline";

    /**
     * 参保管理导入三表 之 社保表
     */
    public static final String SOC = "soc";

    /**
     * 参保管理导入三表 之 医保表
     */
    public static final String ME = "me";

    /**
     * 参保管理导入三表 之 公积金表
     */
    public static final String PF = "pf";

    /**
     * 社保账号缓存
     */
    public static final String SOC_CACHE = "社保";

    /**
     * 医保账号缓存
     */
    public static final String ME_CACHE = "医保";

    /**
     * 公积金账号缓存
     */
    public static final String PF_CACHE = "公积金";

    /**
     * 参保管理批量导入sheet 之一 社保
     */
    public static final String BATCH_SOC = "batchSoc";

    /**
     * 参保管理批量导入sheet 之二 公积金
     */
    public static final String BATCH_PF = "batchPf";

    /**
     * 企业通知/个人通知类型-微信
     */
    public static final String NOTICE_TYPE_WECHAT = "1";

    /**
     * 企业通知/个人通知类型-短信
     */
    public static final String NOTICE_TYPE_TEXT = "2";

    /**
     * 企业通知/个人通知类型-邮箱
     */
    public static final String NOTICE_TYPE_EMAIL = "3";

    /**
     * 企业通知/个人通知业务类型
     */
    public static final String NOTICE_SUBJECT_TYPE_COMPANY = "companySysNotice";

    /**
     * 个人通知业务类型
     */
    public static final String NOTICE_SUBJECT_TYPE_EMP = "empNotice";

    /**
     * 未读
     */
    public static final Integer READ_STATUS_NO = 0;

    /**
     * 已读
     */
    public static final Integer READ_STATUS_READ = 1;

    /**
     * 部分已读
     */
    public static final Integer READ_STATUS_READ_SOME = 2;

    /**
     * 社保账单
     */
    public static final String SOC_BILL = "社保账单";

    /**
     * 公积金账单
     */
    public static final String PF_BILL = "公积金账单";

    /**
     * 薪资账单
     */
    public static final String SALARY_BILL = "薪资账单";

    /**
     * 个人
     */
    public static final String PERSONAL = "个人";

    /**
     * 单位
     */
    public static final String COMPANY = "单位";

    /**
     * 薪资账单
     */
    public static final String APPROVE_SALARY_BILL = "salaryBill";

    /**
     * 社保账单
     */
    public static final String APPROVE_SOC_BILL = "socBill";

    /**
     * 公积金账单
     */
    public static final String APPROVE_PF_BILL = "pfBill";

    /**
     * 账单类型审批业务类型
     */
    public static final String SUBJECT_TYPE_COST_BILL = "costBill";

    /**
     * 一键发薪审批默认的用工单位id
     */
    public static final String COMPANY_APPROVE_ONE_KEY_PAY = "defaultTransferAccounts";

    /**
     * 一键发薪审批业务类型
     */
    public static final String SUBJECT_TYPE_ONE_KEY_PAY = "transferAccounts";

    /**
     * 超级后台设置的一键发薪审批类型的code
     */
    public static final String APPROVE_ONE_KEY_PAY = "transferAccounts";

    /**
     * 入职审批
     */
    public static final String APPROVE_ON_JOB = "OnJob";

    /**
     * 待转正审批
     */
    public static final String APPROVE_TURN_STRAIGHT = "TurnStraight";

    /**
     * 待调岗审批
     */
    public static final String APPROVE_TRANSFER_DUTY = "TransferDuty";

    /**
     * 待离职审批
     */
    public static final String APPROVE_LEAVING = "Leaving";

    /**
     * 预登记人员来源：花名册
     */
    public static final String HUW = "花名册";

    /**
     * 添加人员:预登记人员
     */
    public static final Integer TYPE_CHECKIN = 1;

    /**
     * 添加人员:员工
     */
    public static final Integer TYPE_EMP = 2;

    /**
     * 补交类型(1:补收)
     */
    public static final String SUPPLEMENT_TYPE_ONE = "1";

    /**
     * 补交类型(2：补缴)
     */
    public static final String SUPPLEMENT_TYPE_TWO = "2";

    /**
     * 社保子项类型(1:社保)
     */
    public static final Integer SOC_ITEM_TYPE = 1;

    /**
     * 社保子项类型(2:公积金)
     */
    public static final Integer PF_ITEM_TYPE = 2;

    /**
     * 社保子项类型(3:医保)
     */
    public static final Integer ME_ITEM_TYPE = 3;

    /**
     * 固定业务员
     */
    public static final Integer FIXED_USER = 2;

    /**
     * 固定用工单位
     */
    public static final Integer FIXED_COMPANY = 1;

    /**
     * 超管
     */
    public static final String SUPREME = "supreme";

    /**
     * 民族
     */
    public static final String NATION = "汉族,满族,蒙古族,回族,藏族,维吾尔族,苗族,彝族,壮族,布依族,侗族,瑶族,白族,土家族,哈尼族," +
            "哈萨克族,傣族,黎族,傈僳族,佤族,畲族,高山族,拉祜族,水族,东乡族,纳西族,景颇族,柯尔克孜族,土族,达斡尔族,仫佬族,羌族,布朗族,撒拉族," +
            "毛南族,仡佬族,锡伯族,阿昌族,普米族,朝鲜族,塔吉克族,怒族,乌孜别克族,俄罗斯族,鄂温克族,德昂族,保安族,裕固族,京族,塔塔尔族,独龙族," +
            "鄂伦春族,赫哲族,门巴族,珞巴族,基诺族";

    /**
     * 录入字段选取列表的模板id
     */
    public static final String TEMPLATE_ID_LIST = "list";

    /**
     * 添加自定义字段，用工单位是租户
     */
    public static final String ADD_FIELD_COMPANY_SITE = "site";
    /**
     * 增员
     */
    public static final String INCREASE_STR = "增员";

    /**
     * 减员
     */
    public static final String DECREASE_STR = "减员";

    /**
     * 减员
     */
    public static final String NORMAL_SOC_STR = "正常参保";

    /**
     * 社保
     */
    public static final String SOC_STR = "社保";

    /**
     * 医保
     */
    public static final String ME_STR = "医保";

    /**
     * 公积金
     */
    public static final String PF_STR = "公积金";

    /**
     * 下拉框
     */
    public static final Integer FIELD_TYPE_OPTION = 1;

    /**
     * 单行文本
     */
    public static final Integer FIELD_TYPE_TEXT = 2;

    /**
     * 日期选择器
     */
    public static final Integer FIELD_TYPE_DATE = 3;

    /**
     * 多行输入框
     */
    public static final Integer FIELD_TYPE_TEXTAREA = 4;

    /**
     * 数字输入框
     */
    public static final Integer FIELD_TYPE_NUMBER = 5;

    /**
     * 地区
     */
    public static final Integer FIELD_TYPE_AREA = 6;

    /**
     * 上传图片
     */
    public static final Integer FIELD_TYPE_UPLOAD = 7;

    /**
     * 社保同步数据的时候参保方案id填的这个,应该是data不是date懒得改了
     */
    public static final String SYNC_DATE = "syncDate";

    /**
     * 短信场景：用户认证
     */
    public static final String USER_CERTIFICATION = "user_certification";

    /**
     * 短信场景：用户添加试用
     */
    public static final String USER_REGISTER = "user_register";

    /**
     * 租户级部门或组织的lever
     */
    public static final Integer SITE_LEVER = 1;

    /**
     * 公司级部门或组织的lever
     */
    public static final Integer COMPANY_LEVER = 2;

    /**
     * pc管理端首页查询类型  用工单位
     */
    public static final String TYPE_COMPANY = "company";

    /**
     * pc管理端首页查询类型  租户
     */
    public static final String TYPE_SITE = "site";

    /**
     * pc管理端首页查询类型  用工单位分组
     */
    public static final String TYPE_GROUP = "group";

    /**
     * 消息通知分组:人事管理
     */
    public static final String PERSONNEL_MANAGEMENT = "人事管理";

    /**
     * 消息通知分组:业务审批
     */
    public static final String BUSINESS_APPROVAL = "业务审批";

    /**
     * 消息通知分组:人事管理
     */
    public static final String CONTRACT_MANAGEMENT = "合同管理";

    /**
     * 甲方端签约租户
     */
    public static Integer JIA_FANG_QY = 3;

    /**
     * 甲方端试用租户
     */
    public static Integer JIA_FANG_SY = 4;

    /**
     * 已删除
     */
    public static String ALREADY_DELETE = "(已删除)";

    /**
     * 甲方账号权限code
     */
    public static String JIA_FANG_USER_CODE = "jiafang";
}
